package com.review.Demo_11_同步容器;

import java.awt.List;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Vector;

import javax.swing.text.StyledEditorKit.ForegroundAction;

/**
 * 多线程使用Vector或者HashTable的示例（简单线程同步问题）
 * @author alienware
 */
public class Tickets {

	public static void main(String[] args) {
		//初始化火车票池并添加火车票:避免线程同步可采用Vector替代ArrayList  HashTable替代HashMap
		
		//final ArrayList<String> tickets = new ArrayList<String>();//非同步类容器---线程不安全
		final Vector<String> tickets = new Vector<String>();//同步类容器---线程安全
		
		//Map<String, String> map = Collections.synchronizedMap(new HashMap<String, String>());

		for(int i = 1; i<= 1000; i++){
			tickets.add("火车票"+i);
		}
		
		
		//复合操作----也是在遍历的时候删除，为啥不会ConcurrentModificationException--------？？？？？？？？？？？？
//		for(int i = 1; i<= tickets.size(); i++){
//			tickets.remove(20);
//		}
//		
		
		
		
		//复合操作----在遍历的时候删除元素
		for (Iterator iterator = tickets.iterator(); iterator.hasNext();) {
			String string = (String) iterator.next();
			tickets.remove(20);
		}
		
		//简单操作
//		for(int i = 1; i <=10; i ++){
//			new Thread("线程"+i){
//				public void run(){
//					while(true){
//						if(tickets.isEmpty()) break;
//						System.out.println(Thread.currentThread().getName() + "---" + tickets.remove(0));
//					}
//				}
//			}.start();
//		}
	}
}
